// ================================================================
// Funciones exclusivas del Evolucionador
// ================================================================

	function agregarElementosMedicamentos(id, valor){
		jQuery("#medicamento_id").val(id);
		jQuery("#texto_medicamento_seleccionado").val(valor);
		jQuery("#medicamento").val(valor);

		jQuery("div#resultado_busqueda_medicamentos").hide();
	}



	function cerrarResultadoMedicamentos(){
		jQuery("#resultado_busqueda_medicamentos").hide();
	}

	
	function agregarElementosPracticas(id, valor){
		jQuery("#practica_id").val(id);
		jQuery("#texto_practica_seleccionada").val(valor);
		jQuery("#practica").val(valor);

		jQuery("#resultado_busqueda_practica").hide();
	}
	function cerrarResultadoPracticas(){
		jQuery("#resultado_busqueda_practica").hide();
	}	


	function agregarElementosResultados(id, valor){
		jQuery("#r_practica_id").val(id);
		jQuery("#r_texto_practica_seleccionada").val(valor);
		jQuery("#r_practica").val(valor);

		jQuery("#div_resultado_busqueda_practica").hide();
	}
	function cerrarResultadoResultados(){
		jQuery("#div_resultado_busqueda_practica").hide();
	}	


	function agregarElementos(id, valor){
		jQuery("#problema_id").val(id);
		jQuery("#texto_problema_seleccionado").val(valor);
		jQuery("#problema").val(valor);

		jQuery("#resultado_busqueda").hide();
	}
	function cerrarResultado(){
		jQuery("#resultado_busqueda").hide();
	}

// ================================================================

	function none(){}

	//This function removes overlay to free the UI
	function spotlightoff() {
	 jQuery('.spotlight').removeClass('activo');
	}

	//This function adds an overlay on the UI and add a
	//white background to the html element id passed as an argument in the func
	function spotlighton(element) {
	    jQuery(element).addClass('spotlight');
	    jQuery(element).addClass('activo');	    
	}	

	function mostrarTooltipNotificacion(id_notificacion, element, texto_notificacion, ubicacion_notificacion){

		jQuery(element).tipsy({
			fallback: texto_notificacion + '<br><br><input type="button" class="btn btn-primary" style="width: 70px;" value="Ocultar" onclick="spotlightoff();ocultarTooltipNotificacion(\''+id_notificacion+'\',\''+element+'\');">',
			gravity: ubicacion_notificacion,
			html: true,
			trigger: 'manual',
			opacity: 0.8, 
		});

		jQuery(element).tipsy("show");//then show the first tool tip when document is ready
	}

	function ocultarTooltipNotificacion(id_notificacion, element){
		jQuery(element).tipsy("hide");

		// Cargo el Div con el contenido de la URL
		jQuery.ajax({ 
				url: '/notifications/actualizarusuario/' + id_notificacion
		});		
	}	

	// Busco si existen Notificaciones para la URL que se esta visitando
	function mostrarNotificaciones(){

		var url_actual_escapada = window.location.pathname.replace(new RegExp("/","g"),"_");

		// Averiguo TODAS las Notificaciones a mostrar para la URL actual
		jQuery.ajax({ 
				url: "/notifications/getNotifications/"+url_actual_escapada,
				success: function(data) {

					var data_json = jQuery.parseJSON(data);

					// Si hay datos para mostrar
					if(data_json.length > 0){

						jQuery(data_json).each(function(i,element){ 	


							// Si luego de 10 segundos sigue activo el tooltip, salgo para no volver a cargarlo
							if(jQuery(element.Notification.id_elemento).hasClass('activo')) {
								return false;
							}

							spotlighton(element.Notification.id_elemento); // this function adds an overlay over the whole UI but keeps the element with id textareaWrap white
							mostrarTooltipNotificacion(element.Notification.id,element.Notification.id_elemento,element.Notification.texto,element.Notification.position_tooltip);

							 return false;


						});
					}
				}
		});

	}

	// Funcion para fijar un DIV cuando existe SCROLL
	function FijarDiv(nombre_div, clase_div){

		var alto_div = jQuery('#'+nombre_div).height();

		jQuery("body").scroll(function (event) {
			// what the y position of the scroll is
			var y = jQuery("#contenedor").offset().top;

			// whether that's below the form
			if (y <= alto_div)  {
			  // if so, ad the fixed class
			  jQuery('#'+nombre_div).addClass(clase_div);
			}

			if (y >= 7)  {			
			  // otherwise remove it
			  jQuery('#'+nombre_div).removeClass(clase_div);
			}
		});


	}


	// Funcion para aplicar los filtros en la HCE
	function FiltrarCronologia(id_paciente){

		var string_filtros = "";

		jQuery(".filtros").each(function(i, val){
			// Si el objeto esta seleccionado
			if(val.checked){
				string_filtros = string_filtros + val.value + "|";

				if(val.value==4) {
					// Si es un problema, busco si tengo un filtro aplicado
				}
			}
		});

		var filtro_problema = 0;
		var selectedOption  = jQuery("#filtro_problema").find('option:selected');
	    var selectedValue   = selectedOption.val();					
	    if(selectedValue>0) {
	    	var filtro_problema = selectedValue;
	    }

		// Actualizo la Cronologia
		jQuery('#cargando').show();
		jQuery.ajax({ 
				url: "/registros/index/"+id_paciente+"/"+string_filtros+"/"+filtro_problema,
				success: function(data) {
					jQuery('#panel_hce').html(data);
					jQuery('#cargando').hide();
				}
		});

	}

	function OcultarMenuesEmergentes(objeto){

		if(objeto != 'opciones_cliente'){ jQuery('#opciones_cliente').hide(); };
		if(objeto != 'opciones_forms'){ jQuery('#opciones_forms').hide(); };
		if(objeto != 'opciones_notificaciones'){ jQuery('#opciones_notificaciones').hide(); };
		if(objeto != 'opciones_formularios'){ jQuery('#opciones_formularios').hide(); };
		if(objeto != 'opciones_prescriptor'){ jQuery('#opciones_prescriptor').hide(); };

		// Desactivo los Botones
		jQuery("#form_btn").removeClass("active");
		jQuery("#notify_btn").removeClass("active");

	}

    function mostrar_formulario_emergente(formulario_id, nombre_formulario, id_paciente){
        if ( formulario_id>0 ){
        	MostrarModal('ventana_modal','Formulario:'+nombre_formulario,'/formulariosfront/ejecutar/'+id_paciente+'/'+formulario_id,800,580, false, true);
        }	    	
    }


	function Notificaciones() { 
	  //alert('Se ejecuto la notificacion...');

/*	  mostrarNotificaciones();
	  setTimeout('Notificaciones()', 10000);
*/
	}	

	function ActualizarHora(){
		var curtime = new Date();
		var curhour = curtime.getHours();
		var curmin = curtime.getMinutes();
		var cursec = curtime.getSeconds();
		var time = "";
		if(curhour == 0) curhour = 12;
		time = (curhour > 12 ? curhour - 12 : curhour) + ":" +
		(curmin < 10 ? "0" : "") + curmin + ":" +
		(cursec < 10 ? "0" : "") + cursec + " " +
		(curhour > 12 ? "PM" : "AM");
		document.getElementById("servertime").innerHTML=time;
	}


	function OcultarPanel(ancho_contenido){
		jQuery('#panel_izquierdo').toggle();
		jQuery('#panel_derecho').width("97%");
		jQuery('#link_separador').attr("href", "javascript:MostrarPanel('"+ancho_contenido+"')");
		jQuery('#img_separador').attr("src", "/images/ico-separador-on.png");
	}

	function MostrarPanel(ancho_contenido){
		jQuery('#panel_izquierdo').toggle();
		jQuery('#panel_derecho').width(ancho_contenido);
		jQuery('#link_separador').attr("href", "javascript:OcultarPanel('"+ancho_contenido+"')");
		jQuery('#img_separador').attr("src", "/images/ico-separador-off.png");
	}

	//Returns an object given an id
	function getObjectFromID(id){
		var theObject;
		if(document.getElementById)
			theObject=document.getElementById(id);
		else
			theObject=document.all[id];
		return theObject;
	}

	// Devuelve el nombre del archivo de una URL sin la extensión
	function getName(s) {
		var d = s.lastIndexOf('.');
		return s.substring(s.lastIndexOf('/') + 1, d < 0 ? s.length : d);
	}

	function SetTag(id_people_problem, id_paciente){

		var img_critica = getObjectFromID('img_tag_' + id_people_problem);
		objecto_artificial = new Object();

		if(getName(img_critica.src) == "star-off"){
			img_critica.src = "/images/star-on.gif"
			objecto_artificial.checked = 1;
		}else{
			img_critica.src = "/images/star-off.gif"
			objecto_artificial.checked = 0;
		}

		// Muestra Transicion
		jQuery('#tags_perfil').html('<img src="/images/loading5.gif" style="margin-top: 7px;" />');

		// Actualizo el registro
		 jQuery.ajax({
		   type: "POST",
		   url: '/people_problems/editTag/'+id_people_problem,
		   data: 'estado=' + objecto_artificial.checked,
		   success: function(msg){
					// Resultado obtenido
					if(msg == "S"){ // Si se pudo contactar
						// Actualizo la vista de los TAGs
						jQuery('#tags_perfil').load('/people/mostrartags/'+id_paciente);

					}else{
						alert('No se pudo registrar el Tag... Favor de repetir la operación o realizarla más tarde.');
					}
			  }
		 });
	}

	// 
	function SetEstadoTurno(id_turno, id_paciente, id_nuevo){
		var img_critica = getObjectFromID('img_tur_' + id_nuevo + '_' + id_turno);
		objecto_artificial = new Object();

		// Coloco el Reloj de trabajando
		img_critica.src = "/images/load.gif";

		// Actualizo el registro
		 jQuery.ajax({
		   type: "POST",
		   url: '/turns/setEstadoTurno/'+id_turno+'/'+id_paciente+'/'+id_nuevo,
		   success: function(msg){

					// Resultado obtenido
					if(msg == "N"){ // Si no se pudo procesar
						alert('No se pudo cambiar el estado del Turno... Favor de repetir la operación o realizarla más tarde.');
					}else{
						// Actualizo la vista de los TAGs
						img_critica.src = "/images/turno"+msg+".png";

						jQuery('#img_tur_1_'+id_turno).attr("class", "btn_off");
						jQuery('#img_tur_2_'+id_turno).attr("class", "btn_off");
						jQuery('#img_tur_3_'+id_turno).attr("class", "btn_off");
						jQuery('#img_tur_4_'+id_turno).attr("class", "btn_off");
						jQuery('#img_tur_5_'+id_turno).attr("class", "btn_off");
						jQuery('#img_tur_'+id_nuevo+'_'+id_turno).attr("class", "btn_on");

					}
			  }
		 });
	}

	// Funcion que carga el listado rapido de pacientes
	function CargarListadoRapidoPacientes(id_objeto){


		jQuery.ajax({
		  dataType: "json",
		  url: '/people/getjsonpacientes',
		  beforeSend: function(){
		  	// Muestro el SPINNER
			jQuery('#spin_quick_search').show();

   		  },
		  success: function(msg){

		  	// Oculto el SPINNER
			jQuery('#spin_quick_search').hide();

			var txt_options = '<option value="0">Seleccione un  Paciente</option>';

			jQuery.each(msg.person, function(i, field){
				txt_options += '<option value="' + field.id + '">' + field.name + '</option>';
			});

			jQuery('#'+id_objeto).html(txt_options);

			// Activo el Mejorador de SELECT
			jQuery(".chzn-select").chosen(); 
			jQuery(".chzn-select-deselect").chosen({allow_single_deselect:true});
			jQuery(".chzn-select").chosen({no_results_text: "No hay resultados"});

		  }
		});



		// jQuery.getJSON('/people/getjsonpacientes',function(msg){


		// 	var txt_options = '<option value="0">Seleccione un  Paciente</option>';

		// 	jQuery.each(msg.person, function(i, field){
		// 		txt_options += '<option value="' + field.id + '">' + field.name + '</option>';
		// 	});

		// 	jQuery('#'+id_objeto).html(txt_options);

		// 	// Activo el Mejorador de SELECT
		// 	jQuery(".chzn-select").chosen(); 
		// 	jQuery(".chzn-select-deselect").chosen({allow_single_deselect:true});
		// 	jQuery(".chzn-select").chosen({no_results_text: "No hay resultados"});

		// });

	}

	// FUNCION OBSOLETA QUE SE USABA PARA LA BARRA IZQUIERDA EN LOS TURNOS DEL DIA. Keep for a while
	function CambiarTurno(id_turno, id_paciente){

		var img_critica = getObjectFromID('img_tur_' + id_turno);
		objecto_artificial = new Object();

		// Coloco el Reloj de trabajando
		img_critica.src = "/images/load.gif";

		// Actualizo el registro
		 jQuery.ajax({
		   type: "POST",
		   url: '/turns/cambiarestado/'+id_turno+'/'+id_paciente,
		   success: function(msg){

					// Resultado obtenido
					if(msg == "N"){ // Si no se pudo procesar
						alert('No se pudo cambiar el estado del Turno... Favor de repetir la operación o realizarla más tarde.');
					}else{
						// Actualizo la vista de los TAGs
						img_critica.src = "/images/turno"+msg+".gif";
					}
			  }
		 });
	}


	// Cerrar Sesión
	function CerrarSesion(){

		// Cargo el Dialogo con el Texto
		jQuery( "#dialog-message" ).html('<p><span class="ui-icon ui-icon-alert" style="float:left; margin:0 7px 20px 0;"></span>¿Está seguro que desea Salir?</p>');

		jQuery( "#dialog-message" ).dialog({
			resizable: false,
			title: 'Salir',
			modal: true,
			buttons: {
				Aceptar: function() {

					window.location = "/users/logout";
					jQuery( this ).dialog( "close" );
				},
				Cancelar: function() {
					jQuery( this ).dialog( "close" );
				}
			}
		});

	}

	// Funcion que Cancela Todos los Turnos Seleccionados en el Calendario
	function CancelarTurnos(url_fecha){

		var cant_turnos_cancelar = 0;
		var leyenda_cancelacion = '';
		var msg_operacion = '';
		var arreglo_id_turnos = '';

		jQuery.each(jQuery("input[@name='turn_id_*[]']:checked"), function() {
			var dia_semana = this.name.substr(8,1);
			var id_turno = this.value;

			if(dia_semana != ''){
				arreglo_id_turnos = arreglo_id_turnos + id_turno + '|';
				cant_turnos_cancelar++;
			}

		});

		if(cant_turnos_cancelar > 0){
			if(cant_turnos_cancelar == 1){
				leyenda_cancelacion = '¿Está seguro que desea Cancelar el turno seleccionado?';
			}else{
				leyenda_cancelacion = '¿Está seguro que desea Cancelar los ' + cant_turnos_cancelar + ' turnos seleccionados?';
			}

			// Cargo el Dialogo con el Texto
			jQuery( "#dialog-message" ).html('<p><span class="ui-icon ui-icon-alert" style="float:left; margin:0 7px 20px 0;"></span>'+leyenda_cancelacion+'</p>');

			jQuery( "#dialog-message" ).dialog({
				resizable: false,
				title: 'Cancelación de Turnos',
				modal: true,
				buttons: {
					Aceptar: function() {

						// Procedo a cancelar los Turnos
						jQuery.ajax({ 
							url: "/turns/cancelar/"+arreglo_id_turnos,
							success: function(data) {
								if(data == "S"){
									msg_operacion = '<p>Se han cancelado todos los Turnos seleccionados.</p>';
								}else{
									msg_operacion = 'Se ha producido un Error en el Proceso de la Cancelación de Turnos...';
								}

								// Cargo el Dialogo con el Texto
								jQuery( "#dialog:ui-dialog" ).dialog( "destroy" );
								jQuery( "#dialog-message" ).html('<p>'+msg_operacion+'</p>');
							
								jQuery( "#dialog-message" ).dialog({
									modal: true,
									title: 'Cancelación de Turnos',
									buttons: {
										Aceptar: function() {
											jQuery( this ).dialog( "close" );

											// Actualizo la Pagina
											window.location = "/calendarios/semanal/" + url_fecha;
										}
									}
								});
							}
						});

						jQuery( this ).dialog( "close" );
					},
					Cancelar: function() {
						jQuery( this ).dialog( "close" );
					}
				}
			});

/*
			if(confirm(leyenda_cancelacion)){

			};
*/
		}

	}

	function buscarpracticas(){
		
		jQuery('#cargando').show();
		jQuery.ajax({ 
				url: "/practices/obtenerpracticas/"+jQuery('#practicabuscada').val(),
				success: function(data) {
					jQuery('#practicas_buscadas').html(data);
					jQuery('#practicas_buscadas').height(280);
					jQuery('#cargando').hide();
				}
			});
	}

	function generarlistadopacientes(comienzo, paginar_de_a){
		
		jQuery('#cargando').show();
		jQuery.ajax({ 
				url: "/people/obtenerlistadopacientes/"+comienzo+"/"+paginar_de_a,
				success: function(data) {
					jQuery('#listadopacientes').html(data);
					jQuery('#cargando').hide();
				}
			});
	}
	function limpiarResultadoPracticas(){
		// Vacio las busquedas para que no interfieran con las practicas seleccionadas
		jQuery('#practicas_buscadas').html("&nbsp;");
		jQuery('#practicas_actuales').html("&nbsp;");
		jQuery('#practicas_actuales').hide();
		jQuery('#contenido_combos').html("&nbsp;");
		jQuery('#contenido_combos').hide();
	}

	function buscarproblemas(){
		
		jQuery('#cargando').show();
		jQuery.ajax({ 
				url: "/problems/obtenerproblemas/"+jQuery('#problemabuscada').val(),
				success: function(data) {
					jQuery('#problemas_buscadas').html(data);
					jQuery('#problemas_buscadas').height(280);
					jQuery('#cargando').hide();
				}
			});
	}
	function limpiarResultadoProblemas(){
		// Vacio las busquedas para que no interfieran con las problemas seleccionadas
		jQuery('#problemas_buscadas').html("&nbsp;");
		jQuery('#problemas_actuales').html("&nbsp;");
		jQuery('#problemas_actuales').hide();
	}

	function prevenirPulsarEnter(campo){

		// Prevengo que el ENTER sobre este campo dispare el FORM
		jQuery('#'+campo).keydown(function(e){

				var code = (e.keyCode ? e.keyCode : e.which);
				if(code == 13) { //Enter keycode
					e.preventDefault(); 
//					jQuery('#btn_buscarpracticas').click();
				}
			}
		);
	}

	// Oculto el Mensaje de UPDATES
	function ConfirmarUpdates(){

		jQuery('#msg_update').hide();


		// Cargo el Div con el contenido de la URL
		jQuery.ajax({ 
				url: '/updates/actualizarusuario'
		});
	}


	// Seteo el Profesional Actual
	function SetProfesionalActual(id_cliente, profesional_agenda){
		var res = profesional_agenda.split("|");
		var id_profesional = res[0];
		var id_agenda      = res[1];
		// Muestro el Loading
		jQuery('#cargando').show();
		jQuery.ajax({ 
				url: "/users/setProfesionalActual/"+id_cliente+"/"+id_profesional+"/"+id_agenda,
				success: function(data) {

					// Oculto el Loading
					jQuery('#cargando').hide();

					// Calculo la fecha actual
					var dt = new Date();

					// Actualizo la Pagina
					window.location = "/calendarios/semanal/" + dt.getFullYear() + "/" + (dt.getMonth() + 1) + "/" + dt.getDate();
				}
			});
	}

	// Voy a la Ficha de un Paciente
	function GoHCPaciente(id_paciente){

		if(id_paciente != 0){

			// Muestro el Loading
			jQuery('#cargando').show();
			jQuery.ajax({ 
					url: "/people/view/"+id_paciente,
					success: function(data) {

						// Oculto el Loading
						jQuery('#cargando').hide();

						// Oculto el Tab Side Out
						jQuery('#clickme').trigger('click');
						jQuery('#slidecontent').animate({left:'0px'}, {queue:false, duration: 500});

						// Muestro el HC
						jQuery('#panel_derecho').html(data);
					}
				});
		}
	}

	// Cambio de Rol de un Usuario
	function SetRolActual(id_rol){

		// Muestro el Loading
		jQuery('#cargando').show();
		jQuery.ajax({ 
				url: "/rols/setRolActual/"+id_rol,
				success: function(data) {

					// Actualizo el Rol en la Barra de Navegacion
					//window.location.href = "/dashboards";
					 ActualizarRolActual(); 
					
				}
		});
	}

	// Actualizo el Rol Actual del Usuario
	function ActualizarRolActual(){

		jQuery.ajax({ 
				url: "/rols/getRolActual",
				success: function(data) {
					// Actualizo el Rol en la Barra de Navegacion
					jQuery('#nombre_rol_actual').html(data);

					// Oculto el Loading
					jQuery('#cargando').hide();					
				}
		});

	}



	// Funcion para Seleccionar/Deseleccionar TODOS los Checkbox
	function seleccionarTodo(dia_semana){

		if(jQuery('#checkAll_'+dia_semana).attr('checked')){
			jQuery("input[type='checkbox']").each(function(){

					if(this.name == "turn_id_"+dia_semana+"[]"){
						this.checked = true;
					}
			});

		}else{
			jQuery("input[type='checkbox']").each(function(){

					if(this.name == "turn_id_"+dia_semana+"[]"){
						this.checked = false;
					}
			});
		}
	}


	function MostrarModal(div, titulo_div, data_url, ancho, alto, es_modal, permitir_minimizar){

		// Si hay parametros no definidos
		es_modal = typeof(es_modal ) != 'undefined' ? es_modal  : true;
		permitir_minimizar = typeof(permitir_minimizar ) != 'undefined' ? permitir_minimizar  : false;

		jQuery('#cargando').show();

		// Cargo el Div con el contenido de la URL
		jQuery.ajax({ 
				url: data_url,
				success: function(data) {
					jQuery('#cargando').hide();

					jQuery("#"+div).html(data);

					// Abro la Ventana Modal
					jQuery("#"+div).dialogr({
						maximized: permitir_minimizar,
						minimized: permitir_minimizar,
						height: alto+50,
						width: ancho+50,
						title: titulo_div,
						resizable: true,
						modal: es_modal
					});
					jQuery("#"+div).dialogr('open');

				}
		});
	}

	function MostrarMapa(div, titulo_div, data_url, ancho, alto, es_modal, permitir_minimizar){

		// Si hay parametros no definidos
		es_modal = typeof(es_modal ) != 'undefined' ? es_modal  : true;
		permitir_minimizar = typeof(permitir_minimizar ) != 'undefined' ? permitir_minimizar  : false;

		jQuery('#cargando').show();

		jQuery("#"+div).html('<img src='+data_url+'>');

		jQuery('#cargando').hide();

		// Abro la Ventana Modal
		jQuery("#"+div).dialog({
			height: alto,
			width: ancho,
			title: titulo_div,
			resizable: true,
			modal: es_modal
		});
		jQuery("#"+div).dialog('open');

	}

	// Muestra u Oculta el campo Nota adicional en la Reserva de un Turno
	function MostrarDiv(objeto, div){
		if(objeto.value == "N"){
			jQuery('#'+div).hide();
		}else{
			jQuery('#'+div).show();
		}
	}

	// Determina si se marco el checkbox Paciente Temporario en el Alta de un Turno
	function esPacienteTemporario(objeto){

		// Si es Temporario
		if(objeto.checked){
			jQuery('#lst_paciente').hide();
			jQuery('#infoadicional').show();
		}else{
			jQuery('#lst_paciente').show();
			jQuery('#infoadicional').hide();
		}
	}

	
	
	function EliminarDatosMuro(id_paciente,modelo,id,descripcion){

		// Cargo el Dialogo con el Texto
		jQuery( "#dialog-message" ).html('<p><span class="ui-icon ui-icon-alert" style="float:left; margin:0 7px 20px 0;"></span>¿Está seguro que desea Eliminar este Registro?: \n '+decodeURIComponent((descripcion+'').replace(/\+/g, '%20'))+'</p>');

		jQuery( "#dialog-message" ).dialog({
			resizable: false,
			title: 'Eliminar Registro',
			modal: true,
			buttons: {
				Aceptar: function() {

					window.location = "/registros/EliminarRegistro/"+id_paciente+"/"+modelo+"/"+id;
					jQuery( this ).dialog( "close" );
				},
				Cancelar: function() {
					jQuery( this ).dialog( "close" );
				}
			}
		});

	}	
	
	
	
	jQuery(document).ready(function(){ 


		// ================================================================
		// Activo el Browser History
		// ================================================================

			// Establish Variables
			var History = window.History; // Note: We are using a capital H instead of a lower h
			var State = History.getState();

		    if ( !History.enabled ) {
		         // History.js is disabled for this browser.
		         // This is because we can optionally choose to support HTML4 browsers or not.
		        return false;
		    }		

			// Bind to StateChange Event
			History.Adapter.bind(window,'statechange',function(){ // Note: We are using statechange instead of popstate

				// Log the State
				var State = History.getState(); // Note: We are using History.getState() instead of event.state
				//History.log(State.data, State.title, State.url);
				History.pushState(State.data, State.title, State.url);
			});

		// ================================================================

		// Fijo el Encabezado cunado hay scroll
		FijarDiv("contenedor_encabezado","fixed");
		FijarDiv("panel_banner_derecho","fixed_banner");

		// Funcion que se corre cada segundo y muestra notificaciones
		Notificaciones();

		// Inicializo la ventana para que pueda minimizarse/maximizarse
//		jQuery("#ventana_modal").dialogr({ autoOpen: false, minHeight: 140, minWidth: 310, height: 160, width: 330 });
		jQuery("#ventana_modal").dialog({ autoOpen: false, minHeight: 140, minWidth: 310, height: 160, width: 330 });

		// Les Pongo a las Tablas #myTable la capacidad de Ordenarse
		jQuery.tablesorter.defaults.widgets = ['zebra']; 
		jQuery("#myTable").tablesorter({ 
			// pass the headers argument and assing a object 
			headers: { 
				// assign the secound column (we start counting zero) 
				0: { 
					// disable it by setting the property sorter to false 
					sorter: false 
				}, 
				// assign the third column (we start counting zero) 
				8: { 
					// disable it by setting the property sorter to false 
					sorter: false 
				} 
			} 
		}); 

		/* --------------------------------------------------------------------- */
		/* Activo los menues emergentes											 */
		/* --------------------------------------------------------------------- */
			jQuery('#nombre_cliente').click(function(event){
				OcultarMenuesEmergentes('opciones_cliente');
				jQuery('#opciones_cliente').slideToggle('fast');
				event.stopPropagation();
			});
			jQuery('#branding_forms').click(function(event){
				OcultarMenuesEmergentes('opciones_forms');
				jQuery('#opciones_forms').slideToggle('fast');

				// Activo el Boton
				jQuery("#form_btn").addClass("active");
				event.stopPropagation();
			});

			jQuery('#branding_channel').click(function(event){
				OcultarMenuesEmergentes('opciones_notificaciones');
				jQuery('#opciones_notificaciones').slideToggle('fast');

				// Activo el Boton
				jQuery("#notify_btn").addClass("active");
				event.stopPropagation();
			});


			// Desactivo los menues emergentes
			jQuery('html').click(function() {
				OcultarMenuesEmergentes('all');
			 });

		/* --------------------------------------------------------------------- */

		// Configuro el Tooltip
		jQuery('#slideout img').tipsy({gravity: jQuery.fn.tipsy.autoWE});
		jQuery('#slideout2 img').tipsy({gravity: jQuery.fn.tipsy.autoWE});		
		jQuery('img').tipsy({gravity: jQuery.fn.tipsy.autoNS});


		// Cargo el Calendario
		jQuery( "#datepicker" ).datepicker({
					showOtherMonths: true,
					dayNamesMin: ['Do', 'Lu', 'Ma', 'Mi', 'Ju', 'Vi', 'Sa'],
					dateFormat: 'yy/mm/dd',
					monthNamesShort:	['Ene', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Jul', 'Ago', 'Sep', 'Oct', 'Nov', 'Dic'],
					monthNames: ['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre'],
					nextText: 'Siguiente',
					prevText: 'Anterior',

					onSelect: function(dateText, inst) { 

								jQuery('#cargando').show();
								jQuery.ajax({ 
										url: "/calendarios/semanal/"+dateText,
										cache: false,
										success: function(data) {
											jQuery('#panel_derecho').html(data);
											jQuery('#cargando').hide();

											// Oculto el Tab Side Out
											jQuery('#clickme2').trigger('click');
											jQuery('#slidecontent2').animate({left:'0px'}, {queue:false, duration: 500});

										}
									});
					}

		});

		// Actualizo la Hora en Vivo
		//setInterval("ActualizarHora()", 1000);

		// Tab Side Out: Pacientes
		jQuery('#clickme').toggle(function() {
			jQuery(this).parent().animate({left:'0px'}, {queue:false, duration: 500});
		}, function() {
			jQuery(this).parent().animate({left:'-273px'}, {queue:false, duration: 500});
		});

		// Tab Side Out: Calendario
		jQuery('#clickme2').toggle(function() {
			jQuery(this).parent().animate({left:'0px'}, {queue:false, duration: 500});
		}, function() {
			jQuery(this).parent().animate({left:'-273px'}, {queue:false, duration: 500});
		});

	});